Cách dùng lệnh useradd để thêm user mới trong Linux

Hướng dẫn cách dùng lệnh adduser hoặc useradd trong Linux để thêm user mới vào danh sách.

Trong Linux, lệnh useradd là một lệnh cấp thấp (low-lever) được dùng để thêm / tạo tài khoản người dùng mới trong Linux và các hệ điều hành Unix khác.

Lưu ý:

  • Lệnh useradd cũng tương tự như adduser.
  • Trong một số bản Linux khác thì lệnh useradd có thể có sự khác biệt nhẹ. Vì vậy, bạn nên đọc tài liệu của phiên bản Linux đó trước khi xem bài này.

1. Cú pháp lệnh useradd trong Linux

Khi chúng ta chạy lệnh ‘useradd‘ thì nó thực hiện những bước như sau:

  • Chỉnh sửa các file /etc/passwd, /etc/shadow, /etc/group và /etc/gshadow cho tài khoản người dùng mới được tạo.
  • Tạo và điền thư mục chính cho người dùng mới.
  • Đặt quyền và quyền sở hữu cho thư mục chính.

Cú pháp của lệnh này như sau:

useradd [options] username

Trong đó phần options ta sẽ được học thông qua những ví dụ ở phần II.

*** Thêm mới người dùng trong Linux

Để thêm người dùng mới thì ta chạy lệnh ‘useradd‘ hoặc ‘adduser‘ với ‘username’. ‘username’ là tên đăng nhập của người dùng, được sử dụng để đăng nhập vào hệ thống.

Mỗi lần chạy lệnh ta chỉ có thể thêm một người dùng và tên người dùng đó phải là duy nhất (khác với tên người dùng khác đã tồn tại trên hệ thống).

Ví dụ: Để thêm người dùng mới có tên là ‘tecmint‘, hãy sử dụng lệnh sau.

[root@tecmint ~]# useradd tecmint

Khi chúng ta thêm người dùng mới vào Linux bằng lệnh ‘useradd‘ thì người dùng đó sẽ ở trạng thái bị khóa, vì vây ta cần đặt mật khẩu cho nó bằng lệnh ‘passwd‘ thì mới mở khóa được.

[root@tecmint ~]# passwd tecmint
Changing password for user tecmint.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

Sau khi bạn đặt mật khẩu thì nó sẽ được lưu vào file /etc/passwd, cấu trúc dữ liệu của nó được lưu trong file có dạng như sau:

tecmint:x:504:504:tecmint:/home/tecmint:/bin/bash

Trong đó được chia làm 7 phần được ngăn cách nhau bởi dấu hai chấm. Ý nghĩa của mỗi phần như sau:

  • Username: Là tên đăng nhập, có độ dài từ 1 đến 32 ký tự.
  • Password: Là mật khẩu, được lưu trữ trong file /etc/shadow ở dạng mã hóa.
  • User ID (UID): Mỗi user phải có một ID và duy nhất, ta gọi nó là UID.
  • Group ID (GID): Là group id nhận dạng người dùng này, ta gọi là GID
  • User Info: Là thông tin cơ bản về người dùng, chẳng hạn như full name.
  • Home Directory: Là đường dẫn tuyệt đối đến thư mục chính của người dùng.
  • Shell: Là đường dẫn tuyệt đối đến login shell của người dùng.

2. Các ví dụ sử dụng lệnh useradd trong Linux cơ bản

Đây là những ví dụ ở mức cơ bản, nhưng đó là nền tảng để bạn tạo ra những lệnh nâng cao.

2.1 Tạo mới user ở một thư mục khác thư mục home

Theo mặc định, lệnh ‘useradd‘ tạo thư mục chính của người dùng trong thư mục /home với tên người dùng. Như ở ví dụ trên ta có thể thấy thư mục chính mặc định cho người dùng ‘tecmint‘ là /home/tecmint.

Tuy nhiên, ta hoàn toàn có thể thay đổi thư mục bằng cách sử dụng tùy chọn -d cùng với đó là vị trí của thư mục mới.

Ví dụ: Lệnh sau sẽ tạo một người dùng ‘analha‘ với thư mục chính /data/project.

[root@tecmint ~]# useradd -d /data/projects anusha

Lúc này kiểm tra trong file /etc/passwd bạn có thể thấy thư mục chính của người dùng và thông tin liên quan đến người dùng hoàn toàn khác.

[root@tecmint ~]# cat /etc/passwd | grep anusha

anusha:x:505:505::/data/projects:/bin/bash

2.2 Tạo người dùng và gắn ID User cụ thể

Trong Linux, mỗi người dùng đều có UID (số nhận dạng duy nhất) của riêng mình. Theo mặc định, bất cứ khi nào chúng ta tạo tài khoản người dùng mới trong Linux, nó sẽ chỉ định userid 500, 501, 502, v.v.

Tuy nhiên, chúng ta có thể tạo user’s bằng userid tùy chỉnh với tùy chọn ‘-u‘.

Ví dụ: Lệnh sau sẽ tạo một người dùng ‘navin‘ với userid tùy chỉnh là ‘999‘.

[root@tecmint ~]# useradd -u 999 navin

Bây giờ kiểm tra xem thông tin có chính xác hay không nhé.

[root@tecmint ~]# cat /etc/passwd | grep navin

navin:x:999:999::/home/navin:/bin/bash

Lưu ý rằng bạn phải đảm bảo giá trị của ID người dùng phải là duy nhất so với bất kỳ người dùng nào khác đã được tạo trên hệ thống.

2.3 Tạo người dùng và gắn ID Group cụ thể

Tương tự, mỗi người dùng đều có GID (số nhận dạng nhóm) riêng. Chúng tôi có thể tạo người dùng với ID nhóm cụ thể cũng với tùy chọn -g.

Ở trong ví dụ này ta sẽ thêm người dùng ‘tarunika‘ với UID và GID được chỉ định cụ thể.

[root@tecmint ~]# useradd -u 1000 -g 500 tarunika

Kiểm tra trong file /etc/passwd sẽ như sau:

[root@tecmint ~]# cat /etc/passwd | grep tarunika

tarunika:x:1000:500::/home/tarunika:/bin/bash

2.4 Thêm một người dùng vào nhiều nhóm

Tùy chọn ‘-G‘ được sử dụng để thêm người dùng vào các nhóm bổ sung. Mỗi tên nhóm được phân tách bằng dấu phẩy, không có dấu cách xen vào.

Trong ví dụ này ta đang thêm người dùng ‘tecmint‘ vào nhiều nhóm như admins, webadmin và developer.

[root@tecmint ~]# useradd -G admins,webadmin,developers tecmint

Kiểm tra trong file /etc/passwd sẽ như sau:

[root@tecmint ~]# id tecmint

uid=1001(tecmint) gid=1001(tecmint)
groups=1001(tecmint),500(admins),501(webadmin),502(developers)
context=root:system_r:unconfined_t:SystemLow-SystemHigh

2.5 Thêm người dùng mà không cần thư mục /home

Trong một số trường hợp, chúng ta không muốn chỉ định thư mục chính cho người dùng vì một số lý do bảo mật. Trong trường hợp này, khi người dùng đăng nhập vào một hệ thống vừa mới khởi động lại, thư mục chính của nó sẽ là root. Khi người dùng đó sử dụng lệnh su, thư mục đăng nhập của nó sẽ là thư mục chính của người dùng trước đó.

Để tạo của người dùng mà không có thư mục chính của họ thì ta sử dụng tùy chọn ‘-M‘.

Ví dụ: Lệnh sau sẽ tạo một người dùng ‘shilpi‘ không có thư mục chính.

[root@tecmint ~]# useradd -M shilpi

Kiểm tra trong file /etc/passwd sẽ như sau:

Bây giờ hãy sử dụng lệnh ls để xem có thư mục /home không nhé.

[root@tecmint ~]# ls -l /home/shilpi

ls: cannot access /home/shilpi: No such file or directory

2.6 Tạo user có ngày hết hạn tài khoản

Theo mặc định, khi chúng ta thêm tài khoản người dùng bằng lệnh ‘useradd’ thì tài khoản đó không bao giờ hết hạn, tức là ngày hết hạn của họ được đặt thành 0.

Tuy nhiên, chúng tôi có thể đặt ngày hết hạn bằng tùy chọn ‘-e‘, đặt ngày ở định dạng YYYY-MM-DD. Điều này rất hữu ích cho việc tạo tài khoản tạm thời trong một khoảng thời gian cụ thể.

Ở đây trong ví dụ này, chúng ta tạo một người dùng ‘aparna‘ có ngày hết hạn tài khoản là ngày 27 tháng 4 năm 2014 ở định dạng YYYY-MM-DD.

[root@tecmint ~]# useradd -e 2014-03-27 aparna

Xác minh thời hạn của tài khoản và mật khẩu bằng lệnh ‘chage‘ cho người dùng ‘aparna‘ sau khi đặt ngày hết hạn tài khoản như sau:

[root@tecmint ~]# chage -l aparna

Last password change : Mar 28, 2014
Password expires : never
Password inactive : never
Account expires : Mar 27, 2014
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires: 7

2.7 Tạo user kèm ngày hết hạn cho mật khẩu

Đối số ‘-f‘ được sử dụng để xác định số ngày hết hạn cho mật khẩu. Mặc định thì giá trị hết hạn mật khẩu được đặt thành -1, có nghĩa là không bao giờ hết hạn.

Trong ví dụ này chúng ta sẽ đặt ngày hết hạn mật khẩu tài khoản là 45 ngày đối với người dùng ‘tecmint’ bằng cách sử dụng các tùy chọn ‘-e‘ và ‘-f‘.

[root@tecmint ~]# useradd -e 2014-04-27 -f 45 tecmint

2.8 Thêm người dùng kèm một comment

Tùy chọn ‘-c‘ cho phép bạn thêm comment cho người dùng vừa tạo. Ví dụ như bạn cần ghi note lại thông tin gồm: tên đầy đủ, số điện thoại, v.v. của người dùng vào file /etc/passwd. Comment có thể được thêm vào dưới dạng một dòng duy nhất mà không có bất kỳ khoảng trắng nào.

Ví dụ: Lệnh sau sẽ thêm người dùng ‘mansi‘ và sẽ chèn tên đầy đủ của người dùng đó là "Manis Khurana" vào phần comment.

[root@tecmint ~]# useradd -c "Manis Khurana" mansi

Kiểm tra trong file /etc/passwd sẽ như sau:

[root@tecmint ~]# tail -1 /etc/passwd

mansi:x:1006:1008:Manis Khurana:/home/mansi:/bin/sh

2.9 Thay đổi Login Shell cho người dùng

Khi một phiên đăng nhập thành công thì login shell của người dùng đó cũng được mở theo. Nếu bạn muốn thay đổi login shell này thì có thể sử dụng đối số -s.

Trong ví dụ dưới đây mình đã thiết lập shell cho tài khoản useradd là Non-Login Shell.

[root@tecmint ~]# useradd -s /sbin/nologin tecmint

Kiểm tra trong file /etc/passwd sẽ như sau:

[root@tecmint ~]# tail -1 /etc/passwd

tecmint:x:1002:1002::/home/tecmint:/sbin/nologin

3. Các ví dụ sử dụng lệnh useradd trong Linux nâng cao

Dưới đây là 2 ví dụ nâng cao, sự kết hợp của nhiều tùy chọn trong lệnh useradd.

3.1 Thêm user tại thư mục home, default shell và custom comment

Lệnh sau sẽ tạo một người dùng ‘ravi‘ với thư mục chính là /var/www/tecmint, shell mặc định là /bin/bash và thêm thông tin comment cho người dùng.

[root@tecmint ~]# useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi

3.2 Thêm user tại thư mục home, custom Shell, custom comment và UID/GID

Lệnh tương tự như ví dụ trên, nhưng ở đây chúng ta định nghĩa shell là /bin/zsh và UID và GID tùy chỉnh cho người dùng ‘tarunika‘. Trong đó ‘-u‘ xác định UID của người dùng mới (tức là 1000) và ‘-g‘ xác định GID (tức là 1000).

[root@tecmint ~]# useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 1000 tarunika

Hy vọng qua các ví dụ trên bạn sẽ hiểu rõ hơn về cách sử dụng lệnh useradd để thêm user mới trong Linux. Chúc bạn thành công!

Nguồn: freetuts